#include "sdl.h"
#include "sdl_opengl.h"

#include "globals.hpp"

//=============================================================================
// Inicializace SDL v OpenGL
void initSDL()
{
    // inicializace SDL
    if ( SDL_Init(SDL_INIT_EVERYTHING) < 0 )
        {
            fprintf(stderr, "Nepodarilo se inicializovat SDL: %s\n", SDL_GetError());
            exit(1);
        }
    // nastaveni funkce pri volani exit();
    atexit(SDL_Quit);
    // chceme doublebuffering s openGL
    SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 );

    const SDL_VideoInfo* obrazovka = SDL_GetVideoInfo();

    rozliseni_x = obrazovka->current_w;
    rozliseni_y = obrazovka->current_h;

    // nastavime velikost a styl okna
    if ( SDL_SetVideoMode(rozliseni_x, rozliseni_y, 0, SDL_OPENGL | SDL_FULLSCREEN) == NULL )
        {
            fprintf(stderr, "Nepodarilo se vytvorit OpenGL okno : %s\n", SDL_GetError());
            SDL_Quit();
            exit(2);
        }

    // Nastaveni nazvu aplikace
    SDL_WM_SetCaption("Megaprojekt - Bego & Mochiko", NULL);

    glViewport(0, 0, obrazovka->current_w, obrazovka->current_h);// vyrez obrazovky(okna) ve kterem pobezi opengl
}

//=============================================================================
// Nastaveni zakladnich parametru pro OpenGL
void setupGL()
{
//    glEnable(GL_TEXTURE_2D);               // Povolime textury
    glClearColor(0.0f, 0.0f, 0.0f, 0.0f);  // Nastavime barvu pozadi na cernou
    glClearDepth(1.0);                     // povolime mazani hloubkove bufferu
//    glDepthFunc(GL_LESS);
//    glDisable(GL_DEPTH_TEST);               // Povolime testovani hloubky
//    //glDisable(GL_ALPHA_TEST);
//    //glShadeModel(GL_SMOOTH);
//
    glHint(GL_LINE_SMOOTH_HINT, GL_NICEST);
//
//    //glEnable(GL_LIGHT0);
//    //glEnable(GL_COLOR_MATERIAL);
//
    glMatrixMode(GL_PROJECTION);
//    glLoadIdentity();
    glOrtho(0.0f, rozliseni_x, rozliseni_y, 0.0f, -1.0f, 1.0f);
//
    glMatrixMode(GL_MODELVIEW);

}

//=============================================================================
//vycisteni obrazovky (barva nastavena v glClearColor)
void clearScene()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glLoadIdentity();
}